The manufacture of products and systems typically involves collaboration between members of a project, and sometimes multiple project teams which may be part of the same or a different company. Sometimes, different members of a project or different project teams may be geographically remote from one another. Tasks such as planning, designing, manufacturing, testing and/or deploying a product or system may themselves be divided into multiple tasks (or sub-elements) some of which may be performed independently of other tasks and some of which may be dependent on the completion of other tasks.
A complex task may be defined generally as a task (e.g. a project or build) involving sub-elements, one or some of which are dependent on one or more other tasks or sub-elements.
For example, a first team or company may be responsible for a first task, e.g. producing a first component or system, and another team or company may be responsible for a second task, e.g. producing a second component or system. The first and second tasks may be performed in parallel, or one task may need the other to be completed before it can begin. A third task may involve integrating the first and second components or systems at a later time, therefore requiring the first and second tasks to be completed in advance.
Project management is a term that may be used to describe the planning and management of complex tasks, an important part of which is scheduling. Some project management tools are known. One such example is a Gantt chart which is a type of chart used to illustrate scheduling and/or resource allocation for tasks. Typically, a Gantt chart comprises a list of tasks shown in relation to a time-line. Tasks to be performed over a particular portion of the time-line are indicated on the chart as bars or using similar graphics.
Sometimes, tasks and/or sub-elements may not be scheduled appropriately based on a current state. Elements involved in a task and/or sub-element may change over time. Practical lessons learned during an iteration of a task or sub-element may not be propagated to a subsequent iteration, leading to problems and/or inefficiencies.